//
//  main.m
//  OC2_实例变量可见度和方法
//
//  Created by 徐国庆 on 14-10-31.
//  Copyright (c) 2014年 lanou3g.com 蓝鸥科技. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Teacher.h"
#import "Student.h"
#import "Computer.h"
#import "AirPlane.h"
#import "CallPhone.h"
#import "Cup.h"
#import "Watch.h"
#import "Wallet.h"
#import "Shoes.h"
#import "Dog.h"
#import "Cat.h"
#import "Angel.h"
#import "Ticket.h"
#import "Knife.h"
#import "Ring.h"
#import "Tortoise.h"
#import "Mouse.h"
#import "Chess.h"
#import "Tea.h"
#import "AirConditioning.h"

#import "OrdinaryCorpse.h"
#import "BarricadeCorpse.h"
#import "DrumCorpse.h"


int main(int argc, const char * argv[])
{

    ////////////////////////////////////////////////////////////////////
    //        OC2_实例变量可见度和方法    作业    第一题
    // 完善第一节课“自定义10个类”的作业,需求:1、所有实例变量的可见度修改为默认可见度。 2、给所有的实例变量添加setter和getter。 3、根据需求声明自定义初始化方法。
    
    // 老师类
    // 定义实例变量
//    Teacher *teacher = [[Teacher alloc] init];
//    [teacher setName:@"李中仁" andSex:@"女" andAge:23 andHobbies:@"吃饭，睡觉" andTeachCurriculum:@"Objective-C"];
//    NSLog(@"我们的老师是%@，他以前是男的，去了一次泰国没有把持住自己，结果变成了%@的，他今年才%d岁， 他最喜欢的事情就是%@，因为他就是豆豆，他教我们%@的课程，讲课很好", [teacher name], [teacher sex], [teacher age], [teacher hobbies],[teacher teachCurriculum]);

    
    // 学生类
    // 定义学生类实例变量
//    Student *student = [[Student alloc] init];
//    [student setName:@"徐国庆" andSex:@"man" andNumber:1 andAge:23 andSorce:90];
//    NSLog(@"大家好，我叫%@， 我是%@，我今年%d岁，我的学号是%d，我的成绩是%.2f", [student name], [student sex], [student age], [student number], [student sorce]);
    
    // 电脑类
    // 定义电脑类实例变量
//    Computer *computer = [[Computer alloc] init];
//    [computer setName:@"联想" andColor:@"黑色" andEffect:@"浏览网页，打游戏，敲代码，购物等等" andPrice:4300];
//    NSLog(@"我的电脑是%@的，颜色是%@的， 我经常用电脑%@，当初买它的时候花了%.2f大洋", [computer name], [computer color], [computer effect], [computer price]);
    
    // 飞机类
//    // 定义飞机类实例变量
//    AirPlane *airPlane = [[AirPlane alloc] init];
//    [airPlane setName:@"MH370" andPassengerCapacity:2300 andSpeesPerHour:3000 andTickedPrice:5000];
//    NSLog(@"马航失踪的飞机型号是%@，这架飞机的客容量是%d,时速可以达到%.2f公里每小时，票价是%.2f元", [airPlane name], [airPlane passengerCapacity], [airPlane speedPerHour], [airPlane tickedPrice]);
    
    // 手机类
    // 定义手机类实例变量
//    CallPhone *callPhone = [[CallPhone alloc] init];
//    [callPhone setName:@"SH710" andColor:@"白色" andFunction:@"强大" andPrice:1000];
//    NSLog(@"我现在使用的手机的型号是%@的，颜色是%@的，功能很%@，我买的时候仅仅花了%.2f元", [callPhone name], [callPhone color], [callPhone function], [callPhone price]);
    
    
    // 水杯类
    // 定义水杯类实例变量
//    Cup *cup = [[Cup alloc] init];
//    [cup setColor:@"白色" andMaterialScience:@"玻璃" andCapacity:400 andPrice:30];
//    NSLog(@"我的水杯的颜色是%@的，材料是%@的，容量是%.2f，价钱是%.2f", [cup color], [cup materialScience], [cup capacity], [cup price]);

    
    // 手表类
    // 定义手表类实例变量
//    Watch *watch = [[Watch alloc] init];
//    [watch setName:@"天王" andType:@"圆的" andPalceOfOrigin:@"中国" andPrice:200];
//    NSLog(@"我的手表是%@牌的，形状是%@的，产地是%@，价格是%.2f", [watch name], [watch type], [watch palceOfOrigin], [watch price]);
    
    
    // 钱包类
    // 定义钱包实例变量
//    Wallet *wallet = [[Wallet alloc] init];
//    [wallet setName:@"袋鼠钱包" andColor:@"黑色" andMaterialScience:@"牛皮" andPrice:200];
//    NSLog(@"我的钱包是%@，是我的宝贝送的，是%@的，%@做的，价钱%.2f", [wallet name], [wallet color], [wallet materialScience], [wallet price]);
    
    
    // 鞋子类
    // 定义鞋子的实例变量
//    Shoes *shoes = [[Shoes alloc] init];
//    [shoes setName:@"耐克" andColor:@"蓝色" andMaterialScience:
//    @"塑料"  andPrice:500];
//    NSLog(@"我的鞋子是%@的，是%@的，是%@的，花了%.2f元", [shoes name], [shoes color], [shoes materialScience], [shoes price]);
    
    // 狗类
    // 定义狗类的实例变量
//    Dog *dog = [[Dog alloc] init];
//    [dog setName:@"晓鑫" andSex:@"man" andHair:@"long" andAge:2];
//    NSLog(@"我家的狗名字叫%@，是%@，毛是%@的，今年%d岁了", [dog name], [dog sex], [dog hair], [dog age]);
    

//    // 猫类
//    // 定义猫类实例变量
//    Cat *cat = [[Cat alloc] init];
//    [cat setName:@"蛋黄" andSex:@"nv" andColor:@"花色" andHabbies:@"和晓鑫一起玩耍"];
//    NSLog(@"我家 的小猫名叫…%@，是%@的，%@的，最喜欢的事就是%@", [cat name], [cat sex], [cat color], [cat habbies]);
    
    // 天使类
    // 定义天使类实例变量
//    Angel *angel = [[Angel alloc] init];
//    [angel setName:@"加百列" andColor:@"白色" andSpeed:999999 andAge:20000];
//    NSLog(@"有一个天使叫%@，他时%@的，他的飞行速度是%d公里每秒，他的年龄是%d", [angel name], [angel color], [angel speed], [angel age]);
    
    
    // 车票类
    // 定义车票类实例变量
//    Ticket *ticket = [[Ticket alloc] init];
//    [ticket setName:@"徐国庆" andNumber:5613 andDay:31 andPrice:125];
//    NSLog(@"给我订一张名字是%@的，编号是%d的，日期是%d的，票价是%.2f的火车票", [ticket name], [ticket number], [ticket day], [ticket price]);

    
    // 刀类
    // 定义刀类实例变量
//    Knife *knife = [[Knife alloc] init];
//    [knife setName:@"杀猪刀" andUse:@"杀猪" andLehgth:20 andPrice:100];
//    NSLog(@"%@是非常锋利的，因为他是用来%@的，他也非常的长，有%.2fcm，价格大约在%.2f左右", [knife name], [knife use], [knife length], [knife price]);

    
    // 戒指类
    // 定义戒指类实例变量
//    Ring *ring = [[Ring alloc] init];
//    [ring setName:@"周生生" andMaterialScience:@"金子" andType:@"圆的" andPrice:2000 andWeight:5.55];
//    NSLog(@"%@的%@%@的%.2f克大约不到%.2f元", [ring name], [ring materialScience], [ring type],[ring weight], [ring price]);
    
    
    // 乌龟类
    // 定义乌龟类的实例变量
//    Tortoise *tortoise = [[Tortoise  alloc] init];
//    [tortoise setName:@"晓鑫" andColor:@"黑色" andAge:1000];
//    NSLog(@"我养得乌龟叫%@，是%@的，今年%d了", [tortoise name], [tortoise color], [tortoise age]);

    
    // 鼠标类
    // 定义鼠标类的实例变量
//    Mouse *mouse = [[Mouse alloc] init];
//    [mouse setName:@"双飞燕" color:@"黑色"type:@"小型的" price:40];
//    NSLog(@"我的第一个鼠标是%@的，是%@的，%@，%.2f元", [mouse name], [mouse color], [mouse type], [mouse price]);
    
    // 象棋类
    // 定义象棋类实例变量
//    Chess *chess = [[Chess alloc] init];
//    [chess setName:@"中国象棋" dergree:@"困难" benefits:@"锻炼智力" piece:32];
//    NSLog(@"%@是一种非常好的棋类游戏，下这种棋想下好的话是非常%@的，但是也是可以做到的，只要我们持之以恒，他还可以%@，一盘棋上面共有%d个棋子", [chess name], [chess dergree], [chess benefits], [chess piece]);
    
    
    // 茶类
    // 定义茶类实例变量
//    Tea *tea = [[Tea alloc] init];
//    [tea setName:@"绿茶" color:@"蓝色" benefits:@"利于消化系统" price:30];
//    NSLog(@"%@的好处是%@，是%@的，价格在%.2f左右", [tea name], [tea benefits], [tea color], [tea price]);

    
    // 空调类
    // 定义空调类实例方法
//    AirConditioning *airConditioning = [[AirConditioning alloc] init];
//    [airConditioning setName:@"美的空调" color:@"白色" length:2.2 price:5000];
//    NSLog(@"%@大多是%@的，高度大约%.2f价格大约%.2f", [airConditioning name], [airConditioning color], [airConditioning length], [airConditioning price]);
    
    
    // 普通僵尸类
    // 定义普通僵尸类实例变量
    OrdinaryCorpse *ordinaryCorpse = [[OrdinaryCorpse alloc] init];
    [ordinaryCorpse setCorpseTotalBilld:50];
    [ordinaryCorpse setEveryLoseBlood:3];
    NSLog(@"僵尸总血量%d僵尸每次掉血量%d", [ordinaryCorpse corpseTotalBlood], [ordinaryCorpse everyLoseBlood]);
    for (int i = 0; i < 17; i ++) {
        [ordinaryCorpse beAgainstBloodLoss];
        if ([ordinaryCorpse corpseTotalBlood] <= 0) {
            [ordinaryCorpse death];
            break;
        }
        NSLog(@"僵尸总血量%d僵尸每次掉血量%d", [ordinaryCorpse corpseTotalBlood], [ordinaryCorpse everyLoseBlood]);
    }
    
    
    
    // 路障僵尸类
    // 定义路障僵尸类实例变量
    BarricadeCorpse *barricadeCorpse = [[BarricadeCorpse alloc] init];
    [barricadeCorpse setCorpseTotalBlood:80];
    [barricadeCorpse setEveryLoseBlood:2];
    NSLog(@"路障僵尸总血量%d路障僵尸每次掉血量%d", [barricadeCorpse corpseTotalBlood], [barricadeCorpse everyLoseBlood]);
    for (int i = 0; i < 40; i ++) {
        [barricadeCorpse beAgainstBloodLoss];
        if ([barricadeCorpse corpseTotalBlood] <= 0) {
            [barricadeCorpse death];
            break;
        }
        NSLog(@"路障僵尸总血量%d路障僵尸每次掉血量%d", [barricadeCorpse corpseTotalBlood], [barricadeCorpse everyLoseBlood]);
    }

    
    
    // 铁桶僵尸类
    DrumCorpse *drumCorpse = [[DrumCorpse alloc] init];
    [drumCorpse setCorpseTotalBlood:120];
    [drumCorpse setEveryLoseBlood:1];
    NSLog(@"铁桶僵尸总血量%d铁桶僵尸每次掉血量%d", [drumCorpse corpseTotalBlood], [barricadeCorpse everyLoseBlood]);
    for (int i = 0; i < 121; i ++) {
        [drumCorpse beAgainstBloodLoss];
        if ([drumCorpse corpseTotalBlood] <= 0) {
            [drumCorpse death];
            break;
        }
        NSLog(@"铁桶僵尸总血量%d路障僵尸每次掉血量%d", [drumCorpse corpseTotalBlood], [drumCorpse everyLoseBlood]);
    }

    
    
    
    
    
    
    
    
    return 0;
}






















